#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'''
文件读取。YamlReader 读取 yaml 文件，ExcelReader 读取 excel。
'''

import yaml
import os
from xlrd import open_workbook              # xlrd 模块 解析 Excel

class YamlReader(object):
    
    def __init__(self,Yfile):
        if os.path.exists(Yfile):
            self.Yfile = Yfile
        else:
            raise FileNotFoundError('文件不存在！')
        self._data = None

    @property
    def data(self):
        # 如果是第一次调用 data,读取 yaml 文档，否则直接返回之前保存的数据
        if not self._data:
            with open(self.Yfile,'rb') as f:
                self._data = list(yaml.safe_load_all(f))   # generator 生成器 
            return self._data


class ExcelReader(object):
    '''
    读取 excel 文件中的内容。返回list

    如：
    excel中内容为：
    | A  | B  | C  |
    | A1 | B1 | C1 |
    | A2 | B2 | C2 |

    如果 print(ExcelReader(excel, title_line=True).data)，输出结果：
    [{A: A1, B: B1, C:C1}, {A:A2, B:B2, C:C2}]

    如果 print(ExcelReader(excel, title_line=False).data)，输出结果：
    [[A,B,C], [A1,B1,C1], [A2,B2,C2]]

    可以指定sheet，通过index或者name：
    ExcelReader(excel, sheet=2)
    ExcelReader(excel, sheet='BaiDuTest')

    获取整行和整列的值（数组） 　　
    table.row_values(i) 
    table.col_values(i)
 
    获取行数和列数　　
    nrows = table.nrows
    ncols = table.ncols
       
    循环行列表数据
    for i in range(nrows ):
        print table.row_values(i)
 
    单元格
    cell_A1 = table.cell(0,0).value
    cell_C4 = table.cell(2,3).value
 
    使用行列索引
    cell_A1 = table.row(0)[0].value 
    cell_A2 = table.col(1)[0].value

    '''
    


if __name__ == '__main__':
    y = 'd:\Test_ZY_framework\config\config.yml'
    reader = YamlReader(y)
    print(reader.data)

